﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml.Serialization;

namespace Flipmind.Xero
{
    /// <summary>
    /// 
    /// </summary>
    public enum InvoiceType
    {
        [XmlEnum(Name = "ACCREC")]
        Receivable,
        [XmlEnum(Name = "ACCPAY")]
        Payable
    }

    /// <summary>
    /// 
    /// </summary>
    public enum AccountType
    {
        [XmlEnum(Name = "EQUITY")]
        Equity,
        [XmlEnum(Name = "CURRLIAB")]
        CurrentLiability,
        [XmlEnum(Name = "TERMLIAB")]
        TerminalLiability,
        [XmlEnum(Name = "FIXED")]
        FixedAsset,
        [XmlEnum(Name = "CURRENT")]
        CurrentAsset,
        [XmlEnum(Name = "EXPENSE")]
        Expense,
        [XmlEnum(Name = "REVENUE")]
        Revenue
    }

    /// <summary>
    /// 
    /// </summary>
    public enum InvoiceStatus
    {
        /// <summary>
        /// Approved invoices awaiting payment
        /// </summary>
        [XmlEnum(Name = "AUTHORISED")]
        Authorised,
        /// <summary>
        /// Draft invoices that are deleted 
        /// </summary>
        [XmlEnum(Name = "DELETED")]
        Deleted,
        /// <summary>
        /// Invoices saved as draft or entered via API
        /// </summary>
        [XmlEnum(Name = "DRAFT")]
        Draft,
        /// <summary>
        /// Invoices approved and fully paid
        /// </summary>
        [XmlEnum(Name = "PAID")]
        Paid,
        /// <summary>
        /// Invoices entered by an employee awaiting approval
        /// </summary>
        [XmlEnum(Name = "SUBMITTED")]
        Submitted,
        /// <summary>
        /// Approved invoices that are voided
        /// </summary>
        [XmlEnum(Name = "VOIDED")]
        Void
    }

    /// <summary>
    /// 
    /// </summary>
    public enum TaxType
    {
        /// <summary>
        /// No GST NZ/UK 
        /// </summary>
        [XmlEnum(Name = "NONE")]
        None,
        /// <summary>
        /// VAT on expenses exempt from VAT (UK only) UK
        /// </summary>
        [XmlEnum(Name = "EXEMPTINPUT")]
        ExemptInput,
        /// <summary>
        /// GST on expenses NZ
        /// </summary>
        [XmlEnum(Name = "INPUT")]
        Input,
        /// <summary>
        /// VAT on expenses UK
        /// </summary>
        [XmlEnum(Name = "SRINPUT")]
        SRInput,
        /// <summary>
        /// Expense purchased from overseas (UK only) UK
        /// </summary>
        [XmlEnum(Name = "ZERORATEDINPUT")]
        ZeroRatedInput,
        /// <summary>
        /// Reduced rate VAT on expenses (UK Only) UK
        /// </summary>
        [XmlEnum(Name = "RRINPUT")]
        ReducedRateInput,
        /// <summary>
        /// VAT on sales exempt from VAT (UK only) UK
        /// </summary>
        [XmlEnum(Name = "EXEMPTOUTPUT")]
        ExemptOutput,
        /// <summary>
        /// GST on sales NZ
        /// </summary>
        [XmlEnum(Name = "OUTPUT")]
        Output,
        /// <summary>
        /// VAT on sales UK
        /// </summary>
        [XmlEnum(Name = "SROUTPUT")]
        SrOutput,
        /// <summary>
        /// Sales made from overseas (UK only) UK
        /// </summary>
        [XmlEnum(Name = "ZERORATEDOUTPUT")]
        ZeroRatedOutput,
        /// <summary>
        /// Reduced rate VAT on sales (UK Only) UK
        /// </summary>
        [XmlEnum(Name = "RROUTPUT")]
        ReducedRateOutput,
        /// <summary>
        /// Zero-rated supplies/sales from overseas (NZ Only) NZ
        /// </summary>
        [XmlEnum(Name = "ZERORATED")]
        ZeroRated
    }

    /// <summary>
    /// 
    /// </summary>
    public enum SearchContactType
    {
        [XmlEnum(Name = "all")]
        All,
        [XmlEnum(Name = "customers")]
        Customers,
        [XmlEnum(Name = "suppliers")]
        Suppliers
    }

    /// <summary>
    /// 
    /// </summary>
    public enum SearchContactSortBy
    {
        [XmlEnum(Name = "name")]
        Name,
        [XmlEnum(Name = "emailaddress")]
        EmailAddress
    }

    /// <summary>
    /// 
    /// </summary>
    public enum SearchContactSortByDirection
    {
        [XmlEnum(Name = "desc")]
        Desc,
        [XmlEnum(Name = "asc")]
        Asc
    }

    /// <summary>
    /// 
    /// </summary>
    public enum ContactStatus
    {
        [XmlEnum(Name = "ACTIVE")]
        Active,
        [XmlEnum(Name = "DELETED")]
        Deleted
    }

    /// <summary>
    /// 
    /// </summary>
    public enum AddressType
    {
        [XmlEnum(Name = "STREET")]
        Street,
        [XmlEnum(Name = "POBOX")]
        POBox
    }

    /// <summary>
    /// 
    /// </summary>
    public enum PhoneType
    {
        [XmlEnum(Name = "DEFAULT")]
        Default,
        [XmlEnum(Name = "DDI")]
        DDI,
        [XmlEnum(Name = "MOBILE")]
        Mobile,
        [XmlEnum(Name = "FAX")]
        Fax
    }
}